//
//  NSArray+Filter.h
//  高仿暴走斗图
//
//  Created by key on 2017/3/8.
//  Copyright © 2017年 huangsongyao. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface NSArray (Filter)

/**
 过滤数组，Block模式

 @param completed 过滤条件，此block会被触发数组的count次，并且根据返回的布尔值（YES表示通过信号，NO表示吞噬信号），判断是否触发map和next
 @param map 映射，用于对datas数组的数据进行映射处理，即：当回调被触发，表示datas数组的当前元素满足条件，时，允许使用map回调一个映射的对象
 @param next 当过滤条件和map映射介绍后，此block会被触发，并且next会执行所有满足条件的map映射的count次
 */
- (void)rac_filterUntilCompleted:(BOOL(^)(id predicate))completed toMap:(id(^)(id value))map subscribeNext:(void(^)(id x))next overFilter:(void(^)())over;
- (void)rac_filterUntilCompleted:(BOOL(^)(id predicate))completed toMap:(id(^)(id value))map subscribeNext:(void(^)(id x))next;

/**
 过滤数组，RAC模式

 @param completed 过滤条件，此block会被触发数组的count次，并且根据返回的布尔值（YES表示通过信号，NO表示吞噬信号），判断是否触发map和next
 @param map 映射，用于对datas数组的数据进行映射处理，即：当回调被触发，表示datas数组的当前元素满足条件，时，允许使用map回调一个映射的对象
 @return RACSignal信号
 */
- (RACSignal *)rac_filterUntilCompleted:(BOOL(^)(id predicate))completed toMap:(id(^)(id value))map;

@end
